// ==UserScript==
// @name        韩语翻译网站增强脚本
// @namespace   doubly.top
// @version     1.0.4
// @description 翻译网站增强工具。增加提交后自动播放按钮；增加快捷键提交并播放按钮
// @author      Doubly
// @include     *://basicfinder.airudder.com/*
// @icon        https://www.google.com/s2/favicons?sz=64&domain=airudder.com
// @grant       none
// @downloadURL https://gitee.com/doubly/tampermonkey-script/raw/master/TransalteScript.user.js
// @updateURL   https://gitee.com/doubly/tampermonkey-script/raw/master/TransalteScript.user.js
// @website     https://gitee.com/doubly/tampermonkey-script/tree/master
// ==/UserScript==

(function() {
    'use strict';

    inTranslatePage();

    /**
     * 检测当前页面是否在翻译页面，当跳转到翻译页面时就执行任务
     */
    function inTranslatePage() {
        const startInterval = setInterval(function () {
            const url = window.location.href;
            if (url.includes('basicfinder.airudder.com/tm/project/task')) {
                console.log('进入翻译页面，开始执行任务');
                createElement();
                autoPlay();
                noInTranslatePage();
                clearInterval(startInterval);
            }
        }, 2000);
    }

    /**
     * 检测当前页面是否不在翻译页面，当跳出翻译页面时停止执行任务
     */
    function noInTranslatePage() {
        let interval = setInterval(function () {
            let url = window.location.href;
            if(!url.includes('basicfinder.airudder.com/tm/project/task')){
                console.log('跳出翻译页面，停止执行任务');
                inTranslatePage();
                clearInterval(interval);
            }
        },5000)
    }

    let ctrlDownFlag = false;
    /**
     * 按键按下时触发，结合keyUp事件判定是否单独按下了Ctrl键
     * @param event
     */
    function keydown(event) {
        let keycode = event.keyCode;
        if(event.ctrlKey && keycode===17){
            // console.log('按下了Ctrl键');
            ctrlDownFlag = true;
        }else {
            if(ctrlDownFlag){
                // console.log('按下了组合键，取消判定但案件功能');
                // 此时按下了Ctrl键，说明这个是组合键，不去响应提交
                ctrlDownFlag = false;
            }
        }
    }

    /**
     * 按键松开时触发，结合keyDown事件判定是否单独按下了Ctrl键，单独按下时才提交任务，组合键不提交
     * @param event
     */
    function keyup(event){
        let keycode = event.keyCode;
        if(!event.ctrlKey && keycode === 17 && ctrlDownFlag){
            ctrlDownFlag = false;
            console.log('执行提交操作');
            uploadAndPlay();
        }
    }

    /**
     * 提交并自动播放，自动提交当前的数据
     */
    function uploadAndPlay(){
        const interval = setInterval(() => {
            const element = document.getElementsByClassName('icon-document-up')[0];
            if (element) {
                console.log('检测到提交按钮，开始提交');
                const upload = element.parentElement.parentElement;
                upload.click();
                console.log('提交完成');
                clearInterval(interval);
            }
        });
        //延时2s执行自动播放和创建按钮任务，因为当前的按钮没被清除，会找到旧的按钮
        setTimeout(()=>{createElement();autoPlay();},1500);
    }

    /**
     * 创建自动并播放的按钮
     */
    function createElement(){
        //创建新的播放按钮
        const newupload = document.createElement('button');
        newupload.className = 'ivu-btn ivu-btn-primary ivu-btn-large'
        newupload.setAttribute('style','line-height: 50px;font-size: 30px;');
        newupload.type='button'
        const newspan = document.createElement('span');
        newspan.innerText = '提交&播放'
        newupload.appendChild(newspan)
        newupload.addEventListener('click',uploadAndPlay)

        //循环开始查找添加按钮位置的父元素，找到后，将新的按钮添加进去
        const interval = setInterval(() => {
            const el = document.getElementsByClassName('tools-play-control')[0];
            if (el) {
                console.log('找到添加按钮位置的父元素，开始添加按钮');
                console.log(el);
                el.children[0].appendChild(newupload);
                console.log('创建新按钮完成');
                clearInterval(interval);
            }
            // console.log('未找到添加按钮位置的父元素，尝试重新查找')
        }, 500);

        //添加快捷键事件
        document.addEventListener("keydown", keydown);
        document.addEventListener("keyup", keyup);
        console.log('document快捷按钮事件绑定完成');
        const interval2 = setInterval(() => {
            const textEl = document.getElementsByTagName('textarea')[0];
            if (textEl) {
                console.log('输入框被找到，添加按键事件');
                console.log(textEl);
                textEl.addEventListener("keydown", keydown);
                textEl.addEventListener("keyup", keyup);
                console.log('输入框事件绑定完成');
                clearInterval(interval2);
            }
            // console.log('输入框未找到，将尝试重新查找输入框');
        }, 500);
    }

    /**
     * 自动播放功能
     * 开始查找页面中的播放按钮，找到后就自动播放
     */
    function autoPlay(){
        // createElement()
        // 每500ms尝试查找一次播放按钮，找到后点击播放按钮
        const interval = setInterval(() => {
            const el = document.getElementsByClassName('ivu-icon-ios-play')[0];
            if (el) {
                console.log('找到播放按钮，开始播放')
                const playBtn = el.parentElement.parentElement;
                console.log(playBtn);
                //等待1s，让按钮事件绑定成功后再点击播放
                setTimeout(function () {
                    playBtn.click();
                }, 1000)
                clearInterval(interval)
            }
            // console.log('未找到播放按钮，尝试重新查找')
        }, 500);
    }
})();